Integrated circuits are generally fabricated on a thin silicon wafer or substrate. Semiconductor devices and electrical interconnections that form the integrated circuit are conventionally made by building many mask layers on top of one another on the substrate. Each successive mask layer may have a pattern that is defined using a mask. A mask has a shape used for patterning features in a particular process step during fabrication. The mask layers are fabricated through a sequence of pattern definition steps using the masks, which are interspersed with other process steps such as oxidation, etching, doping and material deposition. When a mask layer is defined using a mask chosen or provided by a customer, the mask layer is programmed or customized.
The lowest, “base” layers include the active areas of the semiconductor devices, such as diffusion regions and gate oxide areas, and desired patterns of the polysilcon gate electrodes. One or more metal and insulating layers are then deposited on top of the base layers and patterned to form conductive segments, which interconnect the various semiconductor devices formed in the base layers. Electrical contacts or vias are formed to electrically connect a conductive segment of one of the metal layers with a conductive segment or semiconductor device on one of the other layers on the wafer.
Several types of integrated circuits have been developed that have modules or blocks of transistors that are partly fixed and partly programmable and/or customizable. The utility of these modular chips is determined by factors such as complexity, cost, time, and design constraints to create functional electronics from these generic blocks of transistors. Field Programmable Gate Array (FPGA) refers to a type of logic chip in which all mask layers are pre-fabricated by an ASIC vendor and has a function that can be easily reprogrammed in the field with trivial modifications. FPGAs, however, are very large and have relatively high cost per function, relatively low speed, and high power consumption. An application specific integrated circuit (ASIC) is an integrated circuit designed specifically for a particular application or use. In a fully programmable ASIC, all mask layers are programmed or customized by the logic designer. A typical example of a fully programmable ASIC is a cell-based ASIC (CBIC). While a fully programmable ASIC efficiently uses power and area as compared to FPGAs, it is very complex to design and prototype. In a semi-programmable ASIC, some, but not all, mask layers are programmable. For example, some or all of the base layers are pre-fabricated by the ASIC vendor and the remaining layers, such as the metal layers, are programmed by the logic designer to interconnect the semiconductor elements to perform the desired function. A typical example of a semi-programmable ASIC is a gate-array-based ASIC. A semi-programmable ASIC can combine the high-density, high-performance benefits of standard-cell ASICs with the fast time-to-market and customization benefits of FPGAs.
Accordingly, semi-programmable ASICs have recently become more popular. Integrated circuit foundries have begun to develop standard, or base, platforms, known as “slices” containing the base layers of an integrated circuit but without the metal interconnection layers. The base layers are patterned to form gates that can be configured into cells using tools supplied by the foundry. The chip designer designs additional metal layers for the base platform to thereby configure the integrated circuit into a custom ASIC employing the customer's intellectual property. An example of such configurable base platform is the RapidChip® Platform available from LSI Logic Corporation of Milpitas, Calif. The RapidChip platform permits the development of complex, high-density ASICs in minimal time with significantly reduced design and manufacturing risks and costs.
The design effort for a semi-programmable ASIC encompasses several stages. After the chip size has been selected and the input-output (I/O) cells have been placed in a layout pattern for the base platform, megacells, including memories and other large hard macros (hardmacs), are placed. Thereafter, standard cells are placed to complete the chip design.
An embodiment of the present invention deals with the placement of processor cores or hardmacs in a design layout (for an ASIC or for an FPGA configuration) relative to the base platform and mapping memory from the design to standard or basic memories that are incorporated into the base platform. Consider a base platform containing basic sets of memories of a predetermined type, such as RRAMs. RRAMs are sets of memory of the same type that are placed compactly and have built-in testing and self-repairing capabilities. Usually, IC designers prefer not to use all the available memory sets of the RRAM so that unused memory sets are available for self-repairing processes. The base platform might also contain single memories such as single diffused memories. The design created by the IC designer may contain user-defined memories, herein, sometimes called customer memories, which are mapped into one or more of the pre-defined memory locations on the base platform.
Typically, a customer design includes one or more processors. A processor runs a sequence of stored instructions to perform tasks defined by a user program. Different instruction sets are used by different types of processors to complete the tasks defined in the program. For example, general purposes instruction sets are typical of microprocessors. Application specific instruction sets are used when it is required to speed up certain computational tasks. For example, a digital signal processor (DSP) embodies instruction sets that enhance computation of certain mathematical algorithms.
Also, different implementations of the same instruction sets are possible in hardware with different trade-offs of performance and resources. One of the common ways this difference arises is how much support memory is available and how that memory is organized. For example, a processor might utilize cache memory for enabling a large address space to be mapped onto a smaller one, by re-using addresses. Another processor might utilize a tightly coupled memory (TCM) having a fixed address space, which is sufficient for most critical instructions of the program.
During the design process, the support memory needed to support the processor is typically mapped to available memory locations that are pre-defined on the base platform, and the processor core is placed relative to the memory location.